//
//  OAuthViewController.swift
//  01- 搭建框架
//
//  Created by as888 on 15/10/16.
//  Copyright © 2015年 任伟. All rights reserved.
//

import UIKit
import SVProgressHUD

/// MARK: - 用户登录的控制器
class OAuthViewController: UIViewController {

    private lazy var webView = UIWebView()
    
    /// MARK: -监听方法
    @objc private func close() {
    
        dismissViewControllerAnimated(true, completion: nil)
    
    }
    
    /// 自动填充用户名和密码 － web 注入（以代码的方式向web页面添加内容）
    @objc private func autoFill() {
        
        let js = "document.getElementById('userId').value = 'renwei3600@126.com';" +
        "document.getElementById('passwd').value = '1841978500';"
        
//        document.getElementById('passwd').value = '1841978500'
//        document.getElementById('userId').value = 'renwei3600@126.com';
        // 让 webView 执行 js
        webView.stringByEvaluatingJavaScriptFromString(js)
    }

    
    /// MARK: -设置界面
    override func loadView() {
        view = webView
        
        //设置代理
        webView.delegate = self
        
        //设置导航栏
        title = "登录新浪微博"
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: .Plain, target: self, action: "close")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style:.Plain, target: self, action: "autoFill")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //加载页面
        self.webView.loadRequest(NSURLRequest(URL: NetworkTools.sharedTools.oauthURL))
        
//        // 在开发中，如果用纯代码开发，视图最好都指定背景颜色，如果为nil，会影响渲染效率
//        print(view.backgroundColor)
//        view.backgroundColor = UIColor.purpleColor()
    
    }

}

/// MARK: -
extension OAuthViewController: UIWebViewDelegate {

    //加载需要请求的代理方法
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        // 目标：如果是百度，就不加载
        // 1. 判断访问的主机是否是 www.baidu.com
        guard let url = request.URL where url.host == "www.baidu.com" else {
            return true
        }
        
        // 2. 从百度地址的 url 中提取 `code=` 是否存在
        guard let query = url.query where query.hasPrefix("code=") else {
            print("取消授权")
            
            return false
        }
        
        // 3. 从 query 字符串中提取 `code=` 后面的授权码
        let code = query.substringFromIndex("code=".endIndex)
        
        print(query)
        print("授权码是 " + code)
        
        //4. 加载 accessToken(网络请求的方法) 和用户的信息
            UserAccountViewModel.sharedUserAccount.loadAccessToke(code) { (isSuccessed) -> () in
                //
                if !isSuccessed{
                    
                    SVProgressHUD.showInfoWithStatus("登录失败")
                    delay(0.5) {
    
                        self.close()
                    }
                    
                }else{
                   // print("成功了")
                   // print(UserAccountViewModel.sharedUserAccount.account)
                    // 发送通知
                    SVProgressHUD.dismiss()
                    self.dismissViewControllerAnimated(false){
                    
                        NSNotificationCenter.defaultCenter().postNotificationName(WBSwitchRootViewControllerNotification, object: "welcome")
                    }
                }
            }
        
                return false
    }
}
